package apuesta.service;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.StatelessSession;
import org.hibernate.Transaction;

import apuesta.dto.EquipoDto;
import apuesta.hibernate.HibernateFactoryApuesta;

public class EquiposService {

	public static List<EquipoDto> buscarEquipos(EquipoDto filtro) {
		/*List<EquipoDto> equipos = new ArrayList<EquipoDto>();
		EquipoDto equipo=null;
		List<Object[]> arrEquipos = null;
		try {
			StatelessSession session = HibernateFactoryApuesta
					.getSessionFactory().openStatelessSession();
			
			StringBuffer sb=new StringBuffer("");
			sb.append("select e.Id_Equipo, e.Nombre_Equipo, d.Descripcion_Disciplina from t_equipo e ");
			sb.append(" inner join t_disciplina d on e.Id_Disciplina=d.Id_Disciplina where 1=1 ");
			
			if(!"".equals(filtro.getNombre_equipo()) && filtro.getNombre_equipo()!=null)
			{
				sb.append(" and e.Nombre_Equipo like :p_nombreEquipo");
			}
			if(filtro.getDisciplina()>0)
			{
				sb.append(" and e.id_Disciplina= :p_idDisciplina");
			}
			
			//--seteando--parametros--//
			Query query = session.createSQLQuery(sb.toString()); 
			if(!"".equals(filtro.getNombreEquipo()) && filtro.getNombreEquipo()!=null)
			{
				query.setString("p_nombreEquipo","%"+ filtro.getNombreEquipo()+"%");
			}
			if(filtro.getIdDisciplina()>0)
			{
				query.setInteger("p_idDisciplina", filtro.getIdDisciplina());
			}
			
			arrEquipos = query.list();
			
			for (Object[] item : arrEquipos) {
				equipo=new EquipoDto();
				equipo.setIdEquipo(Integer.parseInt(item[0].toString()));
				equipo.setNombreEquipo(String.valueOf(item[1]));
				equipo.setDescripcionDisciplina(String.valueOf(item[2]));
				equipos.add(equipo);
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return equipos;*/
		return null;
	}

	public static EquipoDto obtenerById(int idEquipo) {
		EquipoDto equipo = null;
		try {
			StatelessSession sesion = HibernateFactoryApuesta
			.getSessionFactory().openStatelessSession();
			Query query = sesion
					.createQuery("select e FROM EquipoDto e where e.idEquipo =:p_idEquipo");
			query.setInteger("p_idEquipo", idEquipo);
			equipo = (EquipoDto) query.uniqueResult();
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return equipo;
	}

	public static boolean grabar(EquipoDto equipo) {
		boolean res = true;
		Session sesion = HibernateFactoryApuesta.getSessionFactory().openSession();
		try{
			Transaction tx = sesion.beginTransaction();
			sesion.persist(equipo);
			tx.commit();
		}catch(Exception ex){
			System.err.println("no se pudo ejecutar la insercion: "+ex);
			res = false;
		}finally{
			sesion.close();
		}
		return res;
	}
	
	public static int eliminar(EquipoDto obj) {
		int retorno=1;
		try {
			Session sesion = HibernateFactoryApuesta.getSessionFactory()
					.getCurrentSession();
			sesion.beginTransaction();
			sesion.delete(obj);
			sesion.flush();
			sesion.getTransaction().commit();
		} catch (Exception ex) {
			retorno=-1;
			ex.printStackTrace();
		}
		return retorno;
	}
}
